home *** CD-ROM | disk | FTP | other *** search
-
- local function setViewShift(model, reference, shift_x, shift_y)
- model_setViewShift(model.index,
- reference.X + shift_x - model.X,
- reference.Y + shift_y - model.Y)
- end
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- sound_playMusic("music/rybky15.ogg")
- local pokus = getRestartCount()
-
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- room.okno1 = 0
- room.okno2 = 0
- room.okna = 0
- room.uvod = 0
- room.opikniku = random(8) + 1
- repeat
- room.ounave = random(16) + 5
- until math.abs(room.ounave - room.opikniku) > 3
- repeat
- room.oublizeni = random(24) + 9
- until math.abs(room.oublizeni - room.opikniku) > 3 and math.abs(room.oublizeni - room.ounave) > 3
- room.otezkosti = random(500)
-
- return function()
- if (room.okno1 == 0 or room.okno2 == 0) and random(1000) < 25 then
- if room.okno1 == 0 and room.okno2 == 0 and random(2) == 0 then
- pom1 = 1
- elseif room.okno1 == 0 and room.okno2 == 0 then
- pom1 = 2
- elseif room.okno1 == 0 then
- pom1 = 1
- else
- pom1 = 2
- end
- switch(random(5)){
- [0] = function()
- if frkavec.zprava == 0 then
- frkavec.zprava = pom1
- switch(pom1){
- [1] = function()
- room.okno1 = 1
- end,
- [2] = function()
- room.okno2 = 1
- end,
- }
- end
- end,
- [1] = function()
- if hnat.zprava == 0 then
- hnat.zprava = pom1
- switch(pom1){
- [1] = function()
- room.okno1 = 1
- end,
- [2] = function()
- room.okno2 = 1
- end,
- }
- end
- end,
- [2] = function()
- if lahev.zprava == 0 then
- lahev.zprava = pom1
- switch(pom1){
- [1] = function()
- room.okno1 = 1
- end,
- [2] = function()
- room.okno2 = 1
- end,
- }
- end
- end,
- [3] = function()
- if kuk.zprava == 0 then
- kuk.zprava = pom1
- switch(pom1){
- [1] = function()
- room.okno1 = 1
- end,
- [2] = function()
- room.okno2 = 1
- end,
- }
- end
- end,
- [4] = function()
- if ruka.zprava == 0 then
- ruka.zprava = pom1
- switch(pom1){
- [1] = function()
- room.okno1 = 1
- end,
- [2] = function()
- room.okno2 = 1
- end,
- }
- end
- end,
- }
- end
- if no_dialog() and isReady(small) and isReady(big) then
- if room.okno1 + room.okno2 == 2 and room.okna < 2 then
- if room.opikniku > 0 then
- room.opikniku = room.opikniku - 1
- end
- if room.ounave > 0 then
- room.ounave = room.ounave - 1
- end
- if room.oublizeni > 0 then
- room.oublizeni = room.oublizeni - 1
- end
- end
- if ocel.X >= 23 and room.otezkosti > 0 then
- room.otezkosti = room.otezkosti - 1
- end
- if room.uvod == 0 then
- room.uvod = 1
- switch(pokus){
- [1] = function()
- pom1 = 1
- end,
- [2] = function()
- pom1 = random(3) + 1
- end,
- default = function()
- pom1 = random(5)
- end,
- }
- if pom1 > 3 then
- pom1 = 0
- end
- adddel(10 + random(10))
- if pom1 >= 1 then
- addm(0, "pt2-m-parnik")
- end
- if pom1 >= 2 then
- addv(random(30) + 10, "pt2-v-zmena")
- end
- if pom1 >= 3 then
- planBusy(small, true)
- addm(5, "pt2-m-hrac")
- adddel(10)
- planBusy(small, false)
- end
- elseif room.opikniku == 0 then
- room.opikniku = random(50) + 50
- addm(20, "pt2-m-piknik"..random(4))
- elseif room.ounave == 0 then
- room.ounave = random(50) + 50
- addv(20, "pt2-v-unaveni"..random(2))
- elseif room.oublizeni == 0 then
- room.oublizeni = random(50) + 50
- addv(20, "pt2-v-nemohou"..random(2))
- elseif room.otezkosti == 0 then
- room.otezkosti = -1
- addv(20, "pt2-v-minule"..random(2))
- end
- end
- room.okna = room.okno1 + room.okno2
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_kuk()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- kuk:setEffect("invisible")
- kuk.zprava = 0
- kuk.strana = 0
- kuk.okno = 0
-
- return function()
- if kuk.zprava >= 1 and kuk.zprava <= 2 then
- kuk.okno = kuk.zprava
- kuk.zprava = 3
- kuk.strana = random(2)
- switch(random(3)){
- [0] = function()
- kuk.anim = "a0a1a2a3a4a5d?1-10a4a3a2a1a0"
- end,
- [1] = function()
- kuk.anim = "a6a7a8a9a10"
- switch(random(3)){
- [0] = function()
- kuk.anim = kuk.anim.."d?1-10"
- end,
- [1] = function()
- kuk.anim = kuk.anim.."d?1-4a11a12a13a14a15a16d4a15a14d?5-10a13a12a11"
- end,
- [2] = function()
- kuk.anim = kuk.anim.."d?1-4a11a12a13a14a15a16d?3-10a15a14a13a12a11"
- end,
- }
- kuk.anim = kuk.anim.."a10a9a8a7a6"
- end,
- [2] = function()
- kuk.anim = "a17a18a19a20a21a22a23d?1-10a22a21a20a19a18a17"
- end,
- }
- resetanim(kuk)
- end
- if kuk.anim == "" or endanim(kuk) then
- if kuk.zprava == 3 then
- if kuk.okno == 1 then
- room.okno1 = 0
- else
- room.okno2 = 0
- end
- kuk.zprava = 0
- kuk.okno = 0
- kuk:setEffect("invisible")
- end
- else
- goanim(kuk)
- end
- switch(kuk.okno){
- [0] = function()
- setViewShift(kuk, kabina, 3, 1)
- end,
- [1] = function()
- setViewShift(kuk, kabina, 3, 1)
- end,
- [2] = function()
- setViewShift(kuk, kabina, 9, 1)
- end,
- }
- if kuk.okno == 0 then
- kuk:setEffect("invisible")
- else
- if kuk.strana == 1 then
- kuk:setEffect("reverse")
- else
- kuk:setEffect("none")
- end
- end
- kuk:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_ruka()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- ruka:setEffect("invisible")
- ruka.zprava = 0
- ruka.strana = 0
- ruka.okno = 0
-
- return function()
- if ruka.zprava >= 1 and ruka.zprava <= 2 then
- ruka.okno = ruka.zprava
- ruka.zprava = 3
- ruka.strana = random(2)
- ruka.anim = ""
- pom2 = 0
- for pom1 = 1, random(14) + 2 do
- ruka.anim = ruka.anim.."a"..pom2
- if pom2 >= 5 then
- ruka.anim = ruka.anim.."d1"
- end
- if pom2 == 6 then
- pom2 = 5
- else
- pom2 = pom2 + 1
- end
- end
- for pom1 = pom2 - 1, 0, -1 do
- ruka.anim = ruka.anim.."a"..pom1
- end
- resetanim(ruka)
- end
- if ruka.anim == "" or endanim(ruka) then
- if ruka.zprava == 3 then
- if ruka.okno == 1 then
- room.okno1 = 0
- else
- room.okno2 = 0
- end
- ruka.zprava = 0
- ruka.okno = 0
- ruka:setEffect("invisible")
- end
- else
- goanim(ruka)
- end
- switch(ruka.okno){
- [0] = function()
- setViewShift(ruka, kabina, 3, 1)
- end,
- [1] = function()
- setViewShift(ruka, kabina, 3, 1)
- end,
- [2] = function()
- setViewShift(ruka, kabina, 9, 1)
- end,
- }
- if ruka.okno == 0 then
- ruka:setEffect("invisible")
- else
- if ruka.strana == 1 then
- ruka:setEffect("reverse")
- else
- ruka:setEffect("none")
- end
- end
- ruka:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_frkavec()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- frkavec:setEffect("invisible")
- frkavec.zprava = 0
- frkavec.strana = 0
- frkavec.okno = 0
- frkavec.frkacka = 0
-
- return function()
- if frkavec.zprava >= 1 and frkavec.zprava <= 2 then
- frkavec.okno = frkavec.zprava
- frkavec.zprava = 3
- frkavec.strana = random(2)
- frkavec.anim = "a0a1a2a3a4a5"
- for pom1 = 1, random(5) + 1 do
- if random(2) == 0 then
- frkavec.anim = frkavec.anim.."d?5-20a6d6a5"
- else
- frkavec.anim = frkavec.anim.."d?5-20a6s[zprava],1s[zprava],2d6s[zprava],1s[zprava],0,a5"
- end
- end
- frkavec.anim = frkavec.anim.."a4a3a2a1a0"
- resetanim(frkavec)
- end
- if frkavec.anim == "" or endanim(frkavec) then
- if frkavec.zprava == 3 then
- if frkavec.okno == 1 then
- room.okno1 = 0
- else
- room.okno2 = 0
- end
- frkavec.zprava = 0
- frkavec.okno = 0
- frkavec:setEffect("invisible")
- end
- else
- goanim(frkavec)
- end
- switch(frkavec.okno){
- [0] = function()
- setViewShift(frkavec, kabina, 3, 1)
- end,
- [1] = function()
- setViewShift(frkavec, kabina, 3, 1)
- end,
- [2] = function()
- setViewShift(frkavec, kabina, 9, 1)
- end,
- }
- if frkavec.okno == 0 then
- frkavec:setEffect("invisible")
- else
- if frkavec.strana == 1 then
- frkavec:setEffect("reverse")
- else
- frkavec:setEffect("none")
- end
- end
- frkavec:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_hnat()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- hnat.drazdit = random(5) + 1
- hnat:setEffect("invisible")
- hnat.zprava = 0
- hnat.strana = 0
- hnat.okno = 0
-
- return function()
- if hnat.zprava >= 1 and hnat.zprava <= 2 then
- hnat.okno = hnat.zprava
- hnat.zprava = 3
- hnat.strana = random(2)
- if hnat.drazdit > 0 then
- hnat.drazdit = hnat.drazdit - 1
- switch(random(4)){
- [0] = function()
- hnat.anim = "a0a1a2a3a4a5a6a7d1a6a4"
- end,
- [1] = function()
- hnat.anim = "a0a1a2a3a4a5a6a7a8d1a6a4"
- end,
- [2] = function()
- hnat.anim = "a0a1a2a3a4a5a6a7a8a9d1a8a6a4"
- end,
- [3] = function()
- hnat.anim = "a0a1a2a3a4a5a6a7a8a9a10d1a8a6a4"
- end,
- }
- for pom1 = 1, random(5) do
- hnat.anim = hnat.anim.."d1a3d1a4"
- end
- hnat.anim = hnat.anim.."a3a2a1a0"
- elseif hnat.drazdit == 0 then
- hnat.anim = "a0a1a2a3a4a5a6a7a8a9a10a11a12a13"
- switch(random(3)){
- [0] = function()
- hnat.anim = hnat.anim.."a14a15a16a17a18a19a20a21"
- end,
- [1] = function()
- hnat.anim = hnat.anim.."d3a15a17a19a21"
- end,
- [2] = function()
- hnat.anim = hnat.anim.."d7a15a18a21"
- end,
- }
- hnat.drazdit = -random(5) - 2
- elseif hnat.drazdit < 0 then
- hnat.drazdit = hnat.drazdit + 1
- if hnat.drazdit == 0 then
- hnat.drazdit = random(5) + 1
- end
- end
- resetanim(hnat)
- end
- if hnat.anim == "" or endanim(hnat) then
- if hnat.zprava == 3 then
- if hnat.okno == 1 then
- room.okno1 = 0
- else
- room.okno2 = 0
- end
- hnat.zprava = 0
- hnat.okno = 0
- end
- else
- goanim(hnat)
- end
- switch(hnat.okno){
- [0] = function()
- setViewShift(hnat, kabina, 3, 1)
- end,
- [1] = function()
- setViewShift(hnat, kabina, 3, 1)
- end,
- [2] = function()
- setViewShift(hnat, kabina, 9, 1)
- end,
- }
- if hnat.okno == 0 then
- hnat:setEffect("invisible")
- else
- if hnat.strana == 1 then
- hnat:setEffect("reverse")
- else
- hnat:setEffect("none")
- end
- end
- hnat:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_lahev()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- lahev:setEffect("invisible")
- lahev.zprava = 0
- lahev.strana = 0
- lahev.okno = 0
-
- return function()
- if lahev.zprava >= 1 and lahev.zprava <= 2 then
- lahev.okno = lahev.zprava
- lahev.zprava = 3
- lahev.strana = random(2)
- lahev.anim = "a0a1a2a3a4a5a6a7a8"
- for pom1 = 1, random(4) do
- for pom1 = 1, random(3) + 1 do
- lahev.anim = lahev.anim.."a9a10"
- end
- lahev.anim = lahev.anim.."a11a12a13a14a9d?1-6"
- end
- lahev.anim = lahev.anim.."a8a7a6a5a4a3a2a1a0"
- resetanim(lahev)
- end
- if lahev.anim == "" or endanim(lahev) then
- if lahev.zprava == 3 then
- if lahev.okno == 1 then
- room.okno1 = 0
- else
- room.okno2 = 0
- end
- lahev.zprava = 0
- lahev.okno = 0
- end
- else
- goanim(lahev)
- end
- switch(lahev.okno){
- [0] = function()
- setViewShift(lahev, kabina, 3, 1)
- end,
- [1] = function()
- setViewShift(lahev, kabina, 3, 1)
- end,
- [2] = function()
- setViewShift(lahev, kabina, 9, 1)
- end,
- }
- if lahev.okno == 0 then
- lahev:setEffect("invisible")
- else
- if lahev.strana == 1 then
- lahev:setEffect("reverse")
- else
- lahev:setEffect("none")
- end
- end
- lahev:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_frk()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- frk:setEffect("invisible")
-
- return function()
- frk.okno = 0
- if frkavec.frkacka > 0 then
- if frkavec.strana == 0 and frkavec.okno == 2 or frkavec.strana == 1 and frkavec.okno == 1 then
- frk.okno = 3 - frkavec.okno
- frk.afaze = frkavec.frkacka - 1
- end
- end
- switch(frk.okno){
- [0] = function()
- setViewShift(frk, kabina, 3, 1)
- end,
- [1] = function()
- setViewShift(frk, kabina, 3, 1)
- end,
- [2] = function()
- setViewShift(frk, kabina, 9, 1)
- end,
- }
- if frk.okno == 0 then
- frk:setEffect("invisible")
- else
- if frk.strana == 1 then
- frk:setEffect("reverse")
- else
- frk:setEffect("none")
- end
- end
- end
- end
- -- -------------------------------------------------------------
- local function prog_init_glass1()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- local glasses = {glass1, glass_plate}
- for pom1, glass in pairs(glasses) do
- glass.wav = 0
- end
-
- return function()
- for pom1, glass in pairs(glasses) do
- pom2 = glass.wav
- if glass.dir ~= dir_no then
- if pom2 == 0 then
- pom2 = 9
- elseif pom2 <= 6 then
- pom2 = pom2 + 6
- end
- end
- if pom2 == 0 then
- glass.afaze = 0
- else
- pom2 = pom2 - 1
- glass.afaze = 2 - math.mod(math.floor(pom2 / 3), 2)
- end
- glass.wav = pom2
- glass:updateAnim()
- end
- end
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_kuk()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_ruka()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_frkavec()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_hnat()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_lahev()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_frk()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_glass1()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-